E) clone function

clone 함수
객체 자기자신의 내용을 복제해서 포인터를 넘겨줄 때, 사용되는 함수이다.
class Test{
private:
// ...
public:
// ...
Test* Clone() const{ return new Test(*this); }
}
member 변수 중, 동적 할당을 받은 메모리 주소를 가지고 있는 경우
두번 참조가 발생하게 된다(deep copy 되지 않음)
소멸자에서 delete를 호출할 경우, 두번 메모리 해제가 요청되어 에러가 발생될 수 있음
class Test{
private:
int *pvalue; //
public:
Test(){}
~Test(){ if(pvalue)delete[] pvalue; }
Test* Clone();
void Assign(int t){ pvalue=new int[t]; }
}